package fr.afcepf.atod16.groupe1.projet1.dao.catalogue;

import fr.afcepf.atod16.groupe1.projet1.dao.Dao;
import fr.afcepf.atod16.groupe1.projet1.dto.catalogue.DtoFicheProduit;
import fr.afcepf.atod16.groupe1.projet1.dto.util.DtoProduitVignette;
import java.util.List;
import javax.ejb.Local;

/**
 * Interface de la DAO fiche produit
 * @see Dao
 * @author cedric
 * @author stagiaire
 */
@Local
public interface DaoFicheProduit extends Dao<DtoFicheProduit> {

    /**
     * Retrouve des fiches produits par nom
     * @param nom Le nom recherché
     * @return La liste de fiches produits correspondantes
     */
    List<DtoProduitVignette> rechercherParNom(String nom);

    /**
     * Retourne une selection de fiches produits les plus récentes
     * @param nombre Le nombre de fiches produits souhaitées
     * @return La liste de fiches produits
     */
    List<DtoProduitVignette> getSelection(Integer nombre);

    /**
     * Retourne une selection de fiches produits les plus récentes liées à une catégorie produit
     * @param categorie L'identifiant de la catégorie produit
     * @param nombre Le nombre de fiches produits souhaitées
     * @return La liste de fiches produits
     */
    List<DtoProduitVignette> getSelection(Integer categorie, Integer nombre);

    /**
     * Retourne une liste de fiches produits en promo les plus récentes
     * @param nombre Le nombre de fiches produits souhaités
     * @return La liste de fiches produits
     */
    List<DtoProduitVignette> getSelectionPromo(Integer nombre);

    /**
     * Retourne une liste de fiches produits en promo les plus récentes liées à une catégorie produit
     * @param categorie L'identifiant de la catégorie produit
     * @param nombre Le nombre de fiches produits souhaités
     * @return La liste de fiches produits
     */
    List<DtoProduitVignette> getSelectionpromo(Integer categorie, Integer nombre);

    List<DtoProduitVignette> getListProduit(Integer sousCategorie);
}
